約 3,539,865 件
https://w.atwiki.jp/yahirohumpty/pages/32.html
A*アルゴリズム 探索手法の一つ. 古くからある手法でよく使われている. 解説もたくさんあるのでそちらを参照. 参考文献 Wikipedia http //ja.wikipedia.org/wiki/A*
https://w.atwiki.jp/ninjatrader/pages/51.html
遺伝的アルゴリズム(Genetic Algorithm, GA)は、NinjaScriptのストラテジーのパラメーターを最適化するために使用できる、もう一つの最適化技術である。Defaultの最適化アルゴリズムは、できるだけ最良の結果を見つけるために、最適化範囲内でパラメーターの全ての組み合わせをテストする。しかし、それは全ての可能な組み合わせをテストするので、大量の計算パワーと時間を必要とする。GAは、生物学から模倣した進化理論を通して、全ての組み合わせをテストすることなしに近似の最適解を得ることができるので、このような広範囲の最適化に、より適している。 + 遺伝的アルゴリズムの理解 概要 GAがどのようにして最適化問題を解くか、その考え方は、自然淘汰を通して種を環境に適応していく進化の概念に似ている。生物学においては、最も強い個体のみが繁殖し、その優れた遺伝子を次の世代に引き継ぐことができる。それぞれの世代で最も強い遺伝子のみを伝えることができると仮定すると、数世代の反復の後で、我々は環境に対する最適な属性を残すだろう。これと同じメカニズムを使って、GAはパラメーターのランダムな組み合わせをテストする。複数の世代のテストを通して、パラメーターは最適解に収束していく。 注記:GAは、おおよその最適解(近似解)を見つけるということを理解しておくことが重要である。可能な組み合わせ全てをテストするわけではないので、その解が絶対的に最適値である保証は無い。 GAの計算方法 GAは次のステップで解を決定する: ランダムに選択された個体(パラメーター設定の組み合わせ)から構成される初期集団サイズで開始する。 その集団のそれぞれの個体について適応度を計算し、その集団に適応度に基づいた確率を割り当てる。より適応している結果ほど、次の世代の交配で選択される確率が高い。 子孫を生み出すため、交叉と突然変異を通して前の世代から個体を選択することによって、新しく次の世代の集団を生成する。 世代数が目標に到達するまでステップ2から繰り返す 交叉と突然変異 交叉(Crossover)は、100%それらの親とは一致しない子孫を生み出すプロセスである。交叉は親Aからパラメーター設定の半分を取得し、他の親Bからの半分と混ぜ合わせることによって成される。交叉はGAに異なるパラメータの組み合わせをテストし、最適解に絞り込んでいくことを可能にする。交叉はいくつかの世代を経た集団において最終的に同質の子孫を生み出してしまうので、アルゴリズムの適応品質を考慮するために、突然変異(Mutation)を通して一部の子孫にいくつかランダムなパラメーター設定が挿入される。 + 遺伝的アルゴリズムの実行方法 最適化の実施方法については"ストラテジーの最適化"を参照すること。 最適化器(Optimizer)としてGeneticを選択した場合、次の最適化向けプロパティが目に入るだろう: GO # of Generations テストする世代数 GO Crossover Rate (%) それぞれの新しい世代はランダムに生成された子孫の組み合わせから作り出され、子孫は親のパラメーターの組み合わせ(交叉)から生成される。Crossover Rate(交叉率)は、交叉プロセスによって生成される新しい世代の割合を決定する。 GO Generation Size それぞれの世代でテストする組み合わせの個数。値を大きくすると、より様々な組み合わせでテストする。 GO Minimum Performance すべての世代が評価される前にこの成績に到達した場合、即時に最適化処理を打ち切り、結果を表示する。値を0にした場合はMinimum Performance無しを意味する。 GO Mutation Rate (%) 交叉した子孫が突然変異したパラメータを含む確率 (突然変異率) GO Mutation Strength (%) 突然変異のために選び出された子孫が、その変更されたパラメーターを持つことができる交叉値(Mutation Value)からの最大オフセット量(訳注:意訳すると「突然変異で生じさせる変化の許容幅」という意味だと思われる。具体的な作用は不明。このMutation Strengthという言葉はGAの分野での一般的な用語ではなく、似通ってはいるがGAとは独立して研究されてきた進化戦略(Evolution Strategy、ES)という分野で使われているものらしい。ESでは突然変異の実現手段として正規乱数(正規分布に基づく乱数)が使用され、そのバラつきの幅は標準偏差の大きさで制御される。この標準偏差のことをMutation Strength(突然変異強度とでも言えば良いか)と呼び、Mutation Strengthの大きさを調整することで局所解から抜け出しにくかったりあるいは解が収束しにくかったりする問題に対処するとのこと。なお、NinjaTraderのサポートフォーラムでGAによる最適化のプロパティに関する質問を見つけたが、NinjaTrader社のサポート担当者はヘルプを見よ、以上の回答をしていない。) GO Reset Size (%) 新しい世代が作り出される時、前の世代の全ての個体は新たな子孫の親になる可能性がある。新しく作り出された世代の成績上位x%(Stability Size %)の個体が親の成績上位x%と同じ場合、全ての親をリセットし、新しい世代をランダムに再配置する。その一方で、未来の世代のために親の成績上位y%(Reset Size %)のみを残す。(訳注:言い換えると「世代の前後で成績上位x%(xはStability Sizeプロパティで指定)が全く入れ替わっていない場合、後の世代を生成し直す。その際、親の成績上位の個体は、x%ではなくてy%(yはReset Sizeプロパティで指定)を残すようにする。」。多様性を確保して、局所解にはまる問題に対処するためだと思われる。) GO Stability Size (%) "GO Reset Size (%)"プロパティの説明を参照 Keep best # results 表示する上位の結果の個数 Optimize data series Trueに設定した場合、Data Series Valueプロパティが有効になる (Period TypeのKagi、PointAndFigureおよびLine Break periodはサポートしない) Optimize on... 最適化基準。これはGAの分野での"適応度関数(Fitness Function)"のことである。 Optimizer 使用する最適化アルゴリズム。NinjaTraderには最適化アルゴリズムとして"Default"と"Genetic"が付属している。
https://w.atwiki.jp/phktech_tips/pages/27.html
ゲンコツ用パルス発振器を作る プロファイルの生成方法 プロファイルの生成アルゴリズムとして,ブレゼンハムのアルゴリズムが簡便に用いられているが,非線形性の制御には応用が難しい.これに代わる手段として,PD制御器を応用したプロファイル生成を用いる プロファイラに要求される条件 滑らかな速度変化を生成し得ること 目標位置を刻々と変化させられること 処理時間が短いこと いきなり実装の話 パルスはDDAによって発生させる.DDAのパルス周期は100kHzとする.DDAアキュムレータは24bit幅(B23-B0)とする.アキュムレータに速度値を足しこんでいき,DDAアキュムレータのB24が立った場合にパルスを1発生成する. この場合,速度値と出力周波数の関係は以下のとおり fout=vReg / (2^24) * 100kHz fout 出力周波数[Hz vReg 速度レジスタ 以下のソースを100kHzで実行する p- accumulator += p- frequency;; if((p- accumulator 0x01000000) != 0){ p- accumulator = 0x00FFFFFF; //パルス発生 *dest = pVal; numOfPulses++; }else{ //そのままスルー *dest = 0xFF; } PDコントローラの構成 以下のソースをDDA更新周期の50倍程度の周期で実行する 周期を荒くする理由は2つある 1)CPU負荷を下げるため 2)微分制御が効くようにするため D項の値はe1-e2の値のゲイン倍である 毎回実行すると,e1,e2の値に差が生じることが少ないため,有効にD項が働かない e1 = targetPos - aPos; //位置偏差算出 acc = e1 * KP + (e1 - e2) * KD; //PD制御 e2 = e1; //制御量ストア //加速度リミッタを設ける if(acc 80000){ acc = 80000; }else if(acc -80000){ acc = -80000; } vFreq += acc; //制御出力によって速度更新 KP=100 KD=10000程度の値が適当である. この制御のキモは加速度リミッタである 生成されたプロファイルの最大加速度はこの加速度リミッタ値に依存する. よって,加速度リミッタ値をモーターの出力トルクに見合った値にすることで,無理なく加速できるプロファイルが自動的に生成される. 加速度リミッタの設定方法
https://w.atwiki.jp/hmiku/pages/2483.html
こいのあるごりずむ【登録タグ VOCALOID こ クヌースP 初音ミク 曲】 作詞:クヌースP 作曲:クヌースP 編曲:クヌースP 唄:初音ミク 曲紹介 暖かで優しいテクノポップが特徴の歌。 歌詞には様々なPC用語がてんこ盛り。 ぼからん#111にてED採用されました。 歌詞 ワタシの回路のメモリー オーバーロードしてるの あふれるあなたのイメージ 演算不可能 なぜなの? 流れるビットの音楽 高まる私のクロック コイルは限界 もうだめ 暴走寸前 どうしよう アルゴリズム組み換えて 増幅させよう プロセッサ フル稼動 もう大変なの プロテクトはずすから デコードしてね 胸いっぱいのシグナル 気づいて欲しいの <演算フカノウ・・・・> インターフェイスは鍵盤 ベロシティセンスはMAX 解析準備は出来てる システムデータ受信中・・・ 感じるあなたのユビサキ 生まれるステキなウェーブ 音符は私をとらえて 新しいステージへつれてゆく 秘密のプロトコルで 通信するから 二人だけのポートを 開いておいてね ロイドだって恋するわ 大変なのよ 胸いっぱいのシグナル 気づいて欲しいの <la la la la la la la・・・> <高まる私のクロック> コメント 名前 コメント
https://w.atwiki.jp/hmiku/pages/23542.html
あるごりずむ・すぱいらる【登録タグ あ 曲 鏡音リン 鏡音レン (бεб)P】 作詞:(бεб)P 作曲:(бεб)P 編曲:(бεб)P 唄:鏡音リン・鏡音レン 曲紹介 いい双子の日なのでリンレン新曲です!「わかっちゃいるけどやめられない」がテーマのなっております。中毒ってコワイヨネー(作者コメ転載) 歌詞 壊れかけていた世界の歯車 回すアルゴリズム 掛け違えて スパイラル ねじれ落ちてゆく 見え透いた未来は 容易く 思いのままに書き換えて 忘れてしまいたい 今日の涙は 無かった事にして 嘘で固められた現実に放り込まれ 真実を追いかけても 薄ら寒いだけ 壊れかけていた世界の歯車 回すアルゴリズム 定められた道を選ぶだけでいい 回り始めたら もう止められない 定められたスパイラル 抜け出せない 例え過ちだとしても 描いたようにはいかずに 諦め 捨てるものばかり この手に握ったものなど 一つも無かったと気付いた 「逃げてしまえるなら 命を捨ててもいい」 意味のない勇気だけが 首をもたげて もう抜け出せないスパイラル 気が付けば 闇の底の底で いつの間にか握りしめていたナイフ 明日も変わらず 同じ過ちで同じ涙流し 抜け出せない 破滅へのアルゴリズム 君がいるだけで幸せになれる 下らない世界で 愛を叫び何の意味があるのだろう 壊れかけていた世界の歯車 回すアルゴリズム 掛け違えて スパイラル 回り落ちてゆく もう抜け出せない 分かっているのに 闇に落ちるスパイラル 狂ったまま 回りゆくアルゴリズム コメント 追加おつ! -- 名無しさん (2012-11-25 11 05 47) 名前 コメント
https://w.atwiki.jp/kyo20090608/pages/33.html
ソートの話 21年度アルゴリズムとプログラミング 20年度アルゴリズムとプログラミング 19年度アルゴリズムとプログラミング 18年度アルゴリズムとプログラミング 17年度アルゴリズムとプログラミング
https://w.atwiki.jp/riku13853211/pages/6.html
☆メタヒューリスティック手法とは? 経験則を系統的に用いて,最適化を行うアルゴリズムの総称です。 つまり,過去の履歴を用いて,最適化を行う手法のことです。 ◇メタヒューリスティック手法の例 遺伝的アルゴリズム(GA) タブーサーチ(TS) タブーサーチはTSP(巡回セールスマン問題),ナップザック問題などの組合せ最適化問題の近似解を求める手法の中で,最も強力なものの一つであると言われている[1]. シュミレーティッドアニーリング(SA) シミュレーティッド・アニーリング法は、1983年カークパトリックらによって初めて導入された。SA法とは焼きなまし現象を計算機上で行うことであるが、物質の一様な結晶はいったん高温で融解状態にしてからゆっくり冷ましていくと得られる。この冷却が十分にゆっくりでないと一様な結晶は得られず、構造を持った結晶になってしまう。この現象の特徴は、物理的エネルギーの極小値を与える状態では規則正しい結晶にはならないことである。焼きなましとは、温度という揺らぎを系に与えることにより、エネルギーの極小値にとらわれることなく、大域的な最小値を得るための物理的手段である。 物理現象に限らずとも、このアナロジーを利用すると、数学的な問題である組み合わせ最適化問題などの解へのアプローチも可能になる。つまり、SA法はこのように多数の極小値をもった非線形関数の最小値を求めるための確率的な山登り法である。 ◇メタヒューリスティック手法の特徴 他の最適化手法よりもいい解を早く算出できる (ほぼ)あらゆる最適化問題に使える。 複合して使うことができる(GAとTS等) ☆遺伝的アルゴリズムとは? (メタヒューリスティック手法の一つです。) 簡単に言うと 「ダーウィンの進化論の概念を用いて,優秀な解を導くアルゴリズム」 です。 SEVERAL HEURISTICS \First-Fit \MAX-SUM \Least-loaded 経路再計算を行い、負荷が最も低い経路を選択 \Most-Used \Relative Capacity Loss \Distributed Relative Capacity Loss in ROUTING SUBPROBLE \fixed-alternatc routing 高負荷のリンクやリンク障害に対しては、事前に候補 経路を与えて候補経路を順番に選択する代替経路選択(FAR Fixed Alternate Routing) \adaptive routing 混雑や故障を迂回するために、経路を動的に選択して用いる \semi-adaptive routing MDPとは?? \環境のダイナミクスを以下のようにモデル化したのがMDPである.環境のとりうる状態の集合を S = { s 1 , s 2 , … , s n },エージェントがとりうる行動の集合を A = { a 1 , a 2 , … , a l }と表す.環境中のある状態 s ∈ S において,エージェントがある行動 a を 実行すると,環境は確率的に状態 s ∈ S へ遷移する.その遷移確率を Pr{ st+1 = s | st = s, at = a }= Pa(s,s ) により表す.このとき環境からエージェントへ報酬 r が確率的に与えられるが,その期待値を E{ rt | st = s, at = a, st+1 = s }= Ra(s,s ) により表す. エージェントの各時刻における意志決定は,政策関数π(s, a) = Pr{ at = a | st = s}, (ただし全状態s,全行動aにおいて定義される)によって表される.これは単に政策π とも呼ばれる. ●マルコフ性: 状態s への遷移が, そのときの状態sと行動aにのみ依存し, それ以前の状態や行動には関係ないこと. Shortest Foward Path Tree Algorithm
https://w.atwiki.jp/akitaicpc/pages/86.html
基本的なアルゴリズム タイトルが基本的なアルゴリズムと書いていますが、ジャンル分けが適当なので 基本的とは限らないことを初めに断っておきます。 最大値・最小値 値の交換 配列を逆順にする 配列を巡回シフトさせる エラトステネスのふるい(素数判定) ユークリッドの互除法(2 つの自然数の最大公約数を求める) 拡張ユークリッドの互除法? 素因数分解 ...
https://w.atwiki.jp/yaruhara/pages/61.html
敵の移動アルゴリズム 敵の移動アルゴリズムこれは何? パックマン 追跡型 迎撃(先読み)型 逃走型 待ち伏せ型 間合い確保型 直角移動型 評価値計算型 参考 これは何? ここでは敵をどのように移動させるかについて書いたものです。 パックマン パックマンでは、プレイヤーを囲むような敵のアルゴリズムを構築するために、 追跡タイプ 迎撃タイプ プレイヤーと点対称に動くタイプ ランダムに動くタイプ という4つのアルゴリズムを用意したそうです。 追跡型 プレイヤーを愚直に追いかけるタイプです。 このタイプは、単純ながらもゲーム的にかなり有効だったりします。 それは、 「耐久力が高い」または「数が多い」場合にゴリ押しできる というメリットがあるからです。 例えば、ピンクスウィーツのステージ4では、 プレイヤーを誘導する耐久力の高い敵や、 高速で大量に発射される誘導弾が飛び交うため、 何も考えずローズクラッカーを連発しているだけでは、 すぐにやられてしまいます。 ただ、行動パターンを読みやすいため、 待ち伏せ をされるとあっさりやられてしまいます。 また、 狙った場所に誘導しやすい ということもあります。 (つまり、ピンクスウィーツの例では、攻略するには敵をうまく誘導する必要がある) 実装方法は簡単です。 プレイヤー座標から敵座標を引いて(P )、 P1(プレイヤー座標)-P2(敵座標)=P P を正規化し(||P ||)、移動量をかけてやれば求めることができます。 追跡移動量=||P || × 移動量 迎撃(先読み)型 迎撃とは、プレイヤーが数フレーム後に移動するであろう座標を、 先読みして、そこに移動するタイプです。 追跡型よりも、行動パターンが読みにくいのが特徴です。 ですが、プレイヤーが全く移動しないと、 追跡と同じ移動量になるので、 結局、待ち伏せには弱かったりします。 実装方法です。 手順は、 プレイヤーと敵の相対速度(Vr)を求める プレイヤーと敵の相対距離(Sr)を求める |Sr|÷|Vr|で接近時間(Tc)を求められる となり、Tcから、 プレイヤー座標+プレイヤー移動ベクトル×Tc により、迎撃ポイントを算出することができます。 念のため式を書いておくと、 プレイヤーの現在座標をSp プレイヤーの移動ベクトルをVp 敵の現在座標をSe 敵の移動ベクトルをVe とすると、 Vr=Vp-Ve Sr=Sp-Se Tc=|Sr|÷|Vr| 迎撃ポイント=Sp+Vp×Tc となり、 迎撃移動量=||迎撃ポイント-敵座標||×移動量 となります。 逃走型 追跡型の移動ベクトルを逆にするだけ。 あんまり使い道はなさそう。 待ち伏せ型 普段は隠れていて、プレイヤーと敵との距離が「ある一定の値以内」となった場合に、 追跡・迎撃型となるタイプです。 強力な攻撃力を持つ敵がこのタイプである場合、対処が非常に困難になります。 間合い確保型 プレイヤーと敵との「距離を常に一定」に保とうとするタイプです。 プレイヤーの有効な攻撃範囲に入らず、 敵の有効な攻撃範囲であるギリギリの距離を保たれると、 たぶん、倒せません(´Д`; 直角移動型 プレイヤー座標と敵座標を結んでできた線から直角の方向へ移動するタイプです。 固定画面シューや全方向シューなどで、 プレイヤーとの距離をとりながら、遠距離攻撃をするような敵に向いています。 また、この移動量を毎フレーム求めてやると、プレイヤーの周りをぐるぐる回る といった動きになります。 移動量の求め方は、 相対距離のベクトルから角度を求めて90°を加算・減算したり、 ベクトルをZ軸まで拡張して、法線ベクトル(0, 0, 1)をかけても求めることができます。 評価値計算型 評価値の高いスペースを狙うタイプです。 例えば、シューティングでは画面の中心は弾を避けやすいため、 プレイヤーは中心に移動しようとします。 そこを狙います。 また、アイテムがあるとプレイヤーはそれを取りに行こうとします。 そこを狙います。(嫌な敵だ、、(´Д`; 参考 ゲーム開発者のためのAI入門 ゲームのアルゴリズム~思考ルーチンと物理シミュレーション
https://w.atwiki.jp/ne18-8community/pages/4.html
アルゴリズム的思考法 ◆講義内容 アルゴリズミィな思考回路を養うことが目的。単位を落とすものが多いらしい。 各月ごとの講義内容 5月